package utils

import (
	"encoding/json"

	"github.com/mitchellh/mapstructure"
)

func StructToJson(msg interface{}) ([]byte, error) {
	return json.Marshal(msg)
}
func JsonToStruct(data []byte, v interface{}) error {

	err := json.Unmarshal(data, v)
	return err

}
func MapToStruct(mapData interface{}, structData interface{}) error { //Map转struct
	return mapstructure.Decode(mapData, structData)
}

// func ToStruct(input interface{}, output interface{}) error {
// 	outputType := reflect.TypeOf(input)
// 	outputTypeString := outputType.Kind().String()
// 	if outputTypeString != "ptr" { //如果不是指针就返回错误
// 		return errors.New("output no ptr")
// 	}
// 	inputType := reflect.TypeOf(this)
// 	inputTypeString := inputType.Kind().String()
// 	outputValue := reflect.ValueOf(output)
// 	if inputType == outputType { //如果类型相等
// 		outputValue.Elem().Set(reflect.ValueOf(input).Elem())
// 		return nil
// 	}
// 	if inputType == outputType.Elem() { //如果类型相等
// 		outputValue.Elem().Set(reflect.ValueOf(input))
// 		return nil
// 	}
// 	if inputTypeString == "map" {
// 		return utils.MapToStruct(input, output)
// 	}
// 	return nil
// }
